package com.jsb.laundry.dao;

import com.jsb.laundry.model.entity.CapitalAccount;
import com.jsb.laundry.model.entity.CapitalAccountLog;
import com.jsb.laundry.model.vo.*;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface UserLotteryDao {
    /**
     * 抽奖列表
     *
     * @return
     */
    List<UserLotteryPrizeListVo> list();

    /**
     * 用户信息
     *
     * @return
     */
    UserLotteryListVO findByUserLotteryNum(String userId);

    /**
     * 减去抽奖次数
     *
     * @param num
     * @param userId
     * @return
     */
    int updateNumberSub(@Param("num") int num, @Param("userId") String userId);

    /**
     * 加上
     *
     * @param num
     * @param userId
     * @return
     */
    int updateNumberAdd(@Param("num") int num, @Param("userId") String userId);

    /**
     * 添加抽奖记录
     *
     * @param prizeId
     * @param userId
     * @return
     */
    int addLotteryRecords(@Param("prizeId") String prizeId, @Param("userId") String userId, @Param("orderId") String orderId);

    /**
     * 减去奖品表数量
     *
     * @param prizeNum
     * @param id
     * @return
     */
    int updatePrizeNumSub(@Param("prizeNum") int prizeNum, @Param("id") String id);

    /**
     * 新增已结算日志
     *
     * @param capitalAccountLog
     * @return
     */
    int capitalAccountLogadd(CapitalAccountLog capitalAccountLog);

    /**
     * 查询改奖品多少钱
     *
     * @param id
     * @return
     */
    int findByPrizeMoney(String id);

    /**
     * 查询资金账户基本信息
     *
     * @param thirdpartId
     * @param type
     * @return
     */
    CapitalAccount capitalAccountInfo(@Param("thirdpartId") String thirdpartId, @Param("type") String type);

    /**
     * 更新已结算
     *
     * @param amount
     * @param id
     * @return
     */
    int updateDepositSub(@Param("amount") int amount, @Param("id") String id);

    int updateDepositAdd(@Param("amount") int amount, @Param("id") String id);

    /**
     * 抽奖邀请人人加次数
     * @param userId
     * @param num
     * @return
     */
    int updUserLotteryNum(@Param("userId") String userId, @Param("num") int num);

    /**
     * 抽奖邀请人邀请被邀请人
     * @param userId
     * @param invitee
     * @return
     */
    int addUserLotteryInvitation(@Param("userId") String userId, @Param("invitee") String invitee);

    /**
     * 抽奖邀请途径加次数
     * @param userId
     * @param access
     * @param obtainedTimes
     * @return
     */
    int addUserLotteryRecordRoad(@Param("userId") String userId, @Param("access") String access, @Param("accessType") String accessType, @Param("obtainedTimes") int obtainedTimes);

    /**
     * 注册后添加到抽奖表
     * @param userId
     * @return
     */
    int addUserLotteryInfo(String userId);

    /**
     * 抽奖中奖列表
     * @return
     */
    List<UserLuckDrawAwardListVo> userLuckyDrawAwardList();

    /**
     * 邀请人计数
     * @param userId
     * @return
     */
    UserLuckyDrawAwardCountVo userLuckyDrawAwardCount(String userId);

    /**
     * 分享朋友圈列表次数查询
     * @param userId
     * @param startTime
     * @param endTime
     * @return
     */
    int findByLotteryUserCount(@Param("userId")String userId,@Param("startTime")String startTime,@Param("endTime")String endTime);

    /**
     * 添加分享朋友圈次数
     * @param userId
     * @param num
     * @return
     */
    int addLotteryUser(@Param("userId")String userId,@Param("num")int num);

    /**
     * 查询用户抽奖次数
     * @param userId
     * @return
     */
    int numBerLotteryDraws(String userId);
    /**
     * 已结算
     *
     * @param userId
     * @return
     */
    List<CapitalAccountUnstLogListVo> capitalAccountLogList(String userId);

    /**
     * 根据骑手id查询骑手手机号
     * @param userId
     * @return
     */
    String findByPhone(String userId);

    /**
     * 查询c端是否存在该手机号
     * @param userPhone
     * @return
     */
    int findByUserPhone(String userPhone);

    /**
     * 根据手机号查询userId
     * @param userPhone
     * @return
     */
    String findByUserId(String userPhone);

    /**
     * 活动规则
     * @return
     */
    List<FindByRuleVo> findByRule();
}
